# 任务详情
# 任务详情下方是某品牌天猫店的商品销售数据表，但部分数据缺失，各字段含义如下：

# 字段名	中文含义
# title	商品标题
# age_range	年龄范围
# price	商品价格
# sales_num	商品销量
# comment_num	评论数
# 请使用Pandas库对该数据表完成如下操作：

#   1.将出现空值的记录（行）删除

#   2.如果商品标题重复，保留评论数和商品销量之和较高的那一行商品信息。删除其余重复记录（行）

#   3.将商品按销量高低进行排序（降序）

# 请根据以上任务要求，将右边的函数 tmallData() 补充完整，使其能根据最终商品排名返回正确的商品数据

# 任务要求
#   1.函数接收整数类型变量，即商品的最终排名，返回包含商品信息的数组类型

#   2.函数返回的数组包含3个元素，分别为商品标题(title)、商品销量(sales_num)、评论数(sales_num)

#   3.返回类型为数组类型，3个元素的数据结构商品标题数据类型为str，商品销量数据类型为int，评价数数据类型为int

#   4.如果两个商品标题相同，保留评论数和商品销量较高的记录（行），删除其余重复记录（行）

#   5.如果两个商品标题相同，评论数和商品销量之和相同，保留销量较高的记录（行），删除其余重复记录（行）

#   6.商品标题内的空格不需要进行处理，保持原值不变

# 测试用例
# 输入：1
# 输出：['乐高旗舰店官网悟空小侠系列80012孙悟空齐天大圣黄金机甲', 4765, 720]

# 输入：5
# 输出：['乐高旗舰店官网城市组太空系列60226火星探测航天飞机积木玩具', 1862, 3302]

# 链接地址：http://72.itmc.org.cn:80/JS001/static/data/python/3030/123/fj_lego_tmallshop_sales_data.csv


# 1.运行或提交代码不需要自己编写测试用例，后台自动进行测试检查。
# 2.您编写代码的区域可以不限定在类或者函数体内，保证输入与输出符合任务要求即可。
# 3.点击“运行代码”按钮，可以查看程序设计是否正确，运行次数越多，任务得分越低。
# 4.点击“提交代码”按钮，系统将保存代码，并记录任务数据。
# 5.点击右上方“结束任务”按钮，系统将在后台计算任务得分，任务结束。
# -*- coding: utf-8 -*- 
import pandas as pd


class Solution:
    def tmallData(self, num: int) -> list:
        # 开始编写代码
        # 请将此处的csv文件地址补充完整
        url = 'http://72.itmc.org.cn:80/JS001/static/data/python/3030/123/fj_lego_tmallshop_sales_data.csv'
        chipo = pd.read_csv(url, sep=',', encoding='gb2312')
        list1 = []
        chipo.dropna(inplace=True)  # 删除有缺失值的行
        chipo['sum'] = chipo['sales_num'] + chipo['comment_num']
        chipo['n'] = range(len(chipo))
        chipo.sort_values(by=['title', 'sum', 'sales_num'], inplace=True, ascending=False)
        chipo.drop_duplicates(['title', 'sum'], inplace=True)
        chipo.drop_duplicates(['title'], inplace=True)
        chipo.sort_values(by=['sales_num', 'n'], ascending=[False, True], inplace=True)
        chipo.index = range(len(chipo))
        list1.append(chipo.at[num - 1, 'title'])
        list1.append(int(chipo.at[num - 1, 'sales_num']))
        list1.append(int(chipo.at[num - 1, 'comment_num']))
        return list1
        pass
        # 结束编码


print(Solution.tmallData(Solution, 5))
